package com.boge.ai.utils;

import java.util.ArrayList;
import java.util.List;

public class TextChunkSplitter {

    /**
     * 按照固定字符数将字符串分割为多个块
     *
     * @param text  要分割的文本
     * @param chunkSize 每个块的最大字符数
     * @return 分割后的字符串列表
     */
    public static List<String> splitByFixedCharCount(String text, int chunkSize) {
        List<String> chunks = new ArrayList<>();
        int length = text.length();

        for (int i = 0; i < length; i += chunkSize) {
            int end = Math.min(i + chunkSize, length);
            chunks.add(text.substring(i, end));
        }

        return chunks;
    }

    public static void main(String[] args) {
        String text = "自然语言处理（NLP），作为计算机科学、人工智能与语言学的交融之地，致力于赋予计算机解析和处理人类语言的能力。在这个领域，机器学习发挥着至关重要的作用。利用多样的算法，机器得以分析、领会乃至创造我们所理解的语言。从机器翻译到情感分析，从自动摘要到实体识别，NLP的应用已遍布各个领域。随着深度学习技术的飞速进步，NLP的精确度与效能均实现了巨大飞跃。如今，部分尖端的NLP系统甚至能够处理复杂的语言理解任务，如问答系统、语音识别和对话系统等。NLP的研究推进不仅优化了人机交流，也对提升机器的自主性和智能水平起到了关键作用。";

        int chunkSize = 100; // 每块最多100个字符
        List<String> chunks = splitByFixedCharCount(text, chunkSize);

        for (int i = 0; i < chunks.size(); i++) {
            String chunk = chunks.get(i);
            System.out.printf("块 %d: 长度 %d: %s%n", i + 1, chunk.length(), chunk);
        }
    }
}
